package com.loy.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

/**
 * 1. 将该类交给 spring 管理
 */
@Component
public class MyUserDetailService implements UserDetailsService {
    @Autowired
    public PasswordEncoder passwordEncoder;

    @Override
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {

        /**
         * 1. 这里就是实现了 自定义的登录逻辑，在这里我们可以去查询数据库
         */
        /**
         * 1. 在登录时，如果出现 这个 错误 There is no PasswordEncoder mapped for the id "null"
         * 那么表示，我们需要配置一个密码的加密方式，
         * 2. 我们现在编写一个配置类，WebSecurityConfig,在其中，注入一个 PasswordEncoder
         */
        String pw = passwordEncoder.encode("123");
        return new User("ly",pw,
                AuthorityUtils.commaSeparatedStringToAuthorityList("admin,user"));
    }
}
